package msgdef

import "src/zeus/bytestream"

// Hangup 链接关闭消息
type Hangup struct {
}

func (hb *Hangup) Name() string {
	return "Hangup"
}

// MarshalTo 序列化
func (hb *Hangup) MarshalTo(data []byte) (n int, err error) {
	return hb.Size(), nil
}

// Unmarshal 反序列化
func (hb *Hangup) Unmarshal(data []byte) error {
	return nil
}

// Size 获取长度
func (hb *Hangup) Size() (n int) {
	return 0
}

type SetSessInputMsg struct {
	Val bool
}

func (msg *SetSessInputMsg) Name() string {
	return "SetSessInputMsg"
}

// MarshalTo 序列化
func (msg *SetSessInputMsg) MarshalTo(data []byte) (n int, err error) {
	bw := bytestream.NewByteStream(data)
	return msg.Size(), bw.Marshal(msg)
}

// Unmarshal 反序列化
func (msg *SetSessInputMsg) Unmarshal(data []byte) error {
	br := bytestream.NewByteStream(data)
	return br.Unmarshal(msg)
}

// Size 获取长度
func (hb *SetSessInputMsg) Size() (n int) {
	return bytestream.CalcSize(hb)
}

type SetSessRecvMsg struct {
	Val bool
}

func (msg *SetSessRecvMsg) Name() string {
	return "SetSessRecvMsg"
}

// MarshalTo 序列化
func (msg *SetSessRecvMsg) MarshalTo(data []byte) (n int, err error) {
	bw := bytestream.NewByteStream(data)
	return msg.Size(), bw.Marshal(msg)
}

// Unmarshal 反序列化
func (msg *SetSessRecvMsg) Unmarshal(data []byte) error {
	br := bytestream.NewByteStream(data)
	return br.Unmarshal(msg)
}

// Size 获取长度
func (hb *SetSessRecvMsg) Size() (n int) {
	return bytestream.CalcSize(hb)
}
